package com.tnxst.phexamination.public_health_docking_interface;

import com.tnxst.phexamination.constant.HISConfig;
import com.tnxst.phexamination.constant.Trade;
import com.tnxst.phexamination.utils.StringUtils;
import com.tnxst.phexamination.utils.WebServiceUtils;

import java.util.LinkedHashMap;
import java.util.Map;

public class SystemInterface {

    /**
     * 通过用户名密码获取所在机构信息
     * @param username
     * @param password
     */
    public static void getOrgInfo(String username, String password, WebServiceUtils.Response<Map> response){
        String trade = Trade.INTERFACE_PERMISSION_CONTROL.QUERY_ORG_BY_UN_AND_PWD;
        Map<String,Object> data = new LinkedHashMap<>();
        data.put("UserName",username);
        data.put("Password",password);
        WebServiceUtils.call(trade,data,response);
    }

    /**
     * 登录 01
     * @param username
     * @param password
     * @param response
     */
    public static void login(String username, String password, String uuid,
                             WebServiceUtils.Response<Map> response){
        registerProduct(HISConfig.COMPANY_CODE, HISConfig.PRODUCT_NAME, HISConfig.PRODUCT_TYPE, uuid, username, password, new WebServiceUtils.Response<Map>() {
            @Override
            public void onSuccess(Map result) {
                String productCode = result.get("ProductCode").toString();
                if (productCode.contains("|")){
                    productCode = productCode.replace("该产品已经在该机构注册，不能重复注册!|","");
                }
                HISConfig.PRODUCT_CODE = productCode;
                String trade = Trade.LOGIN;
                Map<String, Object> data = StringUtils.getDataMap();
                data.put("UserName",username);
                data.put("Password",password);
                WebServiceUtils.call(trade,data,response);
            }
            @Override
            public void onError(String error) {
                response.onError(error);
            }
        });
    }

    /**
     * 注册产品 48-1
     * @param companyCode 厂商代码(联系信息中心获取)
     * @param productName 产品名称
     * @param productType 产品类型: 02，健康小屋；03，健康一体机；04,APP应用；05，其他
     * @param extInfo 终端唯一识别号
     * @param username 基卫系统登录用户姓名（正式环境由医院提供）
     * @param password 基卫系统登录用户密码（正式环境由医院提供）
     */
    public static void registerProduct(String companyCode, String productName, String productType,
                                       String extInfo, String username, String password,
                                       WebServiceUtils.Response<Map> response){
        Map<String,Object> data = new LinkedHashMap<>();
        String trade = Trade.INTERFACE_PERMISSION_CONTROL.REGISTERED_PRODUCT;
        data.put("companyCode",companyCode);
        data.put("productName",productName);
        data.put("productType",productType);
        data.put("extInfo",extInfo);
        data.put("username",username);
        data.put("password",password);
        WebServiceUtils.call(trade,data,response);
    }

    /**
     * 48-3 获取自定义字典
     * @param response
     */
    public static void getFamilyDoctorTags(WebServiceUtils.Response response){
        Map<String,Object> data = new LinkedHashMap<>();
        String trade = Trade.INTERFACE_PERMISSION_CONTROL.QUERY_CUSTOM_DICTIONARY;
        data.put("DictType","SFamilyTags");
        WebServiceUtils.call(trade,data,response);
    }
}
